1. Field of the Invention
The present invention generally relates to a method for extracting information from a variety of sources and for traversing the information. More specifically, this invention relates to a method of extracting information from existing software and from other sources and building an object base. In addition, it relates to a mechanism for traversing the information in an efficient manner and for filtering the information so that only pertinent information is seen by the user. This invention includes methods which incorporate object oriented design concepts.
2. Description of the Prior Art
A continual process of evolution and development is part of the life cycle of computer software. This evolution and change often results in the generation of a large amount of information available as documentation for the software. The information is generally the programming code of the application or the internal or external documentation which is provided with the system. This process often creates a high degree of complexity in the system and the documentation. Usually, as the system develops, the amount of documentation for the system increases proportionally. In order to understand a particular aspect of a system, it is often necessary to screen out a large amount of data which is irrelevant. This allows the systems analyst to focus on the pertinent information. However, it is often the case that the sources of the information are not well organized and are not in a standardized format. Therefore, a large amount of effort is wasted in determining where appropriate information can be found and in organizing and understanding the information once it is found.
In some systems, no documentation is available for the program as it was originally written or for revisions subsequently made to the code. Therefore, the systems analyst must extract as much information as possible from the code itself. This involves a great deal of effort since the analyst must analyze a major part of the hardware, software and integration flow and then use this information to draw his own conclusions. In addition, the information which can be derived is often incomplete or difficult to understand. Moreover, if the analyst fails to record his efforts, it would be necessary to repeat the analysis the next time the information is needed.
Two approaches have been suggested to reduce the complexity usually associated with the evolution of computer software systems. The first is to prevent the increase in the complexity of the information by developing standards which must be enforced throughout the lifetime of the project. However, this solution is difficult to implement because it requires a large amount of foresight to develop the proper standards and a high degree of effort to enforce the standards during the lifetime of the system. The second approach is to extract as much information as possible from the existing system and to use the information to rebuild the system and reduce the complexity. Then, standards can be implemented to prevent the reoccurrence of the problem.
Systems and methods have been developed to extract information from existing software. These systems use a massive parser program to create a static database of information. The parser program is separate from the database and is run in batch mode. The parser cannot retrieve information from non software sources and when it is used with large software programs it often requires an unacceptable amount of time to populate the database. Finally, these systems do not include a method for retrieving the data in an organized manner or for combining it with other information. Since the software and non software information cannot exist in the same database, the data is not easily combinable.